// pages/select-checkbox/select-checkbox.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    label: String, // 输入框标签
    place: String, // 输入框提示
    list: Array, // 选择器 选项
    checkSelected: { // 选择器 选项数组中 对象的value的默认key
      type: String,
      value: ''
    },
    popup_title: { // 选择器 选项数组中 对象的value的默认key
      type: String,
      value: '选择门岗（可多选）'
    },
    result: {
      type: Array,
      value: []
    },
    required: {
      type: Boolean,
      value: true
    }


  },
  // 监听传入的变量,当传入的值发生变化时,触发方法
  observers: {
    'list': function (val) {
      // val=> 就是父组件传入组件中的 tabsList 数据
      let l = []
      if (val.length == 1) {
        if (typeof (val[0]) == 'object') {
       
          l.push(val[0][this.data.value_key])
          this.setData({
            list: l,
            result: l[0],
            checkSelected: l[0]
          })
          this.triggerEvent('changeSync', {  // 传递到组件外事件 ， 返回当前选中项 对象
            value: l[0],

          })
          this.triggerEvent('selectShow', {  // 传递到组件外事件 ， 返回当前选中项 对象
            value: true
          })
     


        } else {
          this.setData({
            result: val,
            checkSelected: val[0]
          })
          this.triggerEvent('changeSync', {  // 传递到组件外事件 ， 返回当前选中项 对象
            value: val[0],

          })
          this.triggerEvent('selectShow', {  // 传递到组件外事件 ， 返回当前选中项 对象
            value: true
          })
        }

      }
    }
  },
  /**
   * 页面的初始数据
   */
  data: {
    icon: 'arrow',  // 下拉箭头
    show: false,
    checkSelected: [],
    submit_disabled: true,
  },
  /**
  * 组件的方法列表
  */
  methods: {
    updateData(e) {
      let checkSelected = e.join('/');
      this.setData({
        result: e,
        checkSelected: checkSelected

      })
    },
    // 取消
    cancel() {
      this.setData({ show: false })
      this.triggerEvent('selectShow', {  // 传递到组件外事件 ， 返回当前选中项 对象
        value: true
      })
      this.triggerEvent('sync', {  // 传递到组件外事件 ， 返回当前选中项 对象
        value: this.data.checkSelected, result: this.data.result
      })
    },
    // 确定
    confirm() {
      this.setData({ show: false })
      this.triggerEvent('sync', {  // 传递到组件外事件 ， 返回当前选中项 对象
        value: this.data.checkSelected, result: this.data.result
      })
      this.triggerEvent('selectShow', {  // 传递到组件外事件 ， 返回当前选中项 对象
        value: true
      })
    },
    showPopup() {
      this.setData({
        show: true,
        result: this.data.result
      })
      this.triggerEvent('selectShow', {  // 传递到组件外事件 ， 返回当前选中项 对象
        value: false
      })

      this.checkSubmit()

    },
    onChange(e) {
      let arr = e.detail
      let checkSelected = arr.join('/');
      this.setData({
        result: arr,
        checkSelected: checkSelected
      })
      this.checkSubmit()
    },
    onCellChange(e) {
      let val = e.currentTarget.dataset.row
      let arr = this.data.result
      if (arr.includes(val)) {
        const index = arr.indexOf(val);
        arr.splice(index, 1)
      } else {
        arr.push(val)
      }
      // let arr = e.currentTarget.dataset.row
      let checkSelected = arr.join('/');
      this.setData({
        result: arr,
        checkSelected: checkSelected
      })
      this.checkSubmit()
    },
    checkSubmit() {
      if (this.data.result.length != 0) {
        this.setData({
          submit_disabled: false
        })
      } else {
        this.setData({
          submit_disabled: true
        })
      }
    }

  }
})
